Conditional termination of loops over heap-allocated data

نویسندگان

  • Elvira Albert
  • Puri Arenas
  • Samir Genaim
  • Germán Puebla
  • Guillermo Román-Díez
چکیده

Static analysis which takes into account the values of data stored in the heapis considered complex and computationally intractable in practice. Thus, moststatic analyzers do not keep track of object fields nor of array contents, i.e.,they are heap-insensitive. In this article, we propose locality conditions forsoundly tracking heap-allocated data in Java (bytecode) programs, by meansof ghost non-heap allocated variables. This way, heap-insensitive analysis overthe transformed program can infer information on the original heap-allocateddata without sacrificing efficiency. If the locality conditions cannot be provenunconditionally, we seek to generate aliasing preconditions which, when theyhold in the initial state, guarantee the termination of the program. Experimen-tal results show that we greatly improve the accuracy w.r.t. a heap-insensitiveanalysis while the overhead introduced is reasonable.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

From Shape Analysis to Termination Analysis in Linear Time

We present a novel algorithm to conservatively check whether a (recursive) heap-manipulating program terminates. Our algorithm can be used as a post-processing phase of any shape analysis satisfying some natural properties. The running time of the post-processing phase is linear in the size of the output of the chosen shape analysis. The main idea is to partition the (unbounded but finite) set ...

متن کامل

Termination Analysis of Java Bytecode

Introduction: The state of the art in termination analysis includes advanced techniques developed for logic and functional programming [12, 4, 9, 11, 10] and imperative languages [2, 5, 8, 6, 10], as well as for term rewriting systems [10]. In [6, 5] tools for proving termination of large industrial code are presented. However, termination of low-level languages, such as Java bytecode, has rece...

متن کامل

Proving Termination Through Conditional Termination

We present a constraint-based method for proving conditional termination of integer programs. Building on this, we construct a framework to prove (unconditional) program termination using a powerful mechanism to combine conditional termination proofs. Our key insight is that a conditional termination proof shows termination for a subset of program execution states which do not need to be consid...

متن کامل

Dealing with Numeric Fields in Termination Analysis of Java-like Languages

Termination analysis tools strive to find proofs of termination for as wide a class of (terminating) programs as possible. Though several tools exist which are able to prove termination of non-trivial programs, when one tries to apply them to realistic programs, there are still a number of open problems. In the case of Java-like languages, one of such problems is to find a practical solution to...

متن کامل

Field-Sensitive Value Analysis by Field-Insensitive Analysis

Shared and mutable data-structures pose major problems in static analysis and most analyzers are unable to keep track of the values of numeric variables stored in the heap. In this paper, we first identify sufficient conditions under which heap allocated numeric variables in object oriented programs (i.e., numeric fields) can be handled as nonheap allocated variables. Then, we present a static ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • Sci. Comput. Program.

دوره 92  شماره 

صفحات  -

تاریخ انتشار 2014